I. Field
The present disclosure relates generally to data processing, and more specifically to interleavers and de-interleavers.
II. Background
An interleaver is a functional block that receives input data, shuffles or re-orders the input data, and provides the shuffled data as output data. Interleavers are employed in most wireless communication systems to reduce the impact of noise and interference on performance. For example, channel interleaving is commonly utilized to protect against a burst of errors due to noise and interference. At a transmitter, a channel interleaver shuffles code bits from a channel encoder so that consecutive code bits are spread apart in the interleaved bits. When a sequence of interleaved bits is involved in a burst of errors, these interleaved bits are spread apart after the complementary re-shuffling by a channel de-interleaver at a receiver. Thus, interleaving breaks temporal correlation between successive bits involved in a burst of errors, which may improve performance.
Interleaving may be performed by receiving a data value (e.g., a code bit) at a particular linear address, determining an interleaved address based on the linear address, and storing the data value at the interleaved address. The mapping from the linear address to the interleaved address may be based on a look-up table. A number of packet sizes may be supported, and a look-up table may be generated for each supported packet size. A large amount of memory may then be required to store many look-up tables for mapping linear addresses to interleaved addresses for many different packet sizes. It may thus be desirable to efficiently compute interleaved addresses in real time as needed.